package pingu.monde;

import java.util.ArrayList;

import org.newdawn.slick.Color;

import pingu.joueur.Joueur;

public class GameParameters {
	
	Plateau plateau;
	ArrayList<Joueur> joueurs;
	
	
	public GameParameters(){
		this.plateau=new Plateau(110);
		this.joueurs=new ArrayList<Joueur>();
		joueurs.add(new Joueur("Joueur1", 
				new Color((float)Math.random(),(float)Math.random(),(float)Math.random()),
				4, true,true));
	}
	
	public GameParameters(Plateau plateau,ArrayList<Joueur> joueurs){
		this.plateau=plateau;
		this.joueurs=joueurs;
	}
	
	public void initParameters(int nbCases,int nbJoueurs,int nbPingouins)
	{
		if(nbCases<1)nbCases=1;
		if(nbJoueurs<1)nbJoueurs=1;
		if(nbPingouins<1)nbPingouins=1;

		plateau= new Plateau(nbCases);

		if(joueurs==null){
			joueurs=new ArrayList<Joueur>();
			for (int j = 0; j < nbJoueurs; j++) {
				joueurs.add(new Joueur("Joueur"+(j+1), 
						new Color((float)Math.random(),(float)Math.random(),(float)Math.random()),
						nbPingouins, true,true));
			}
		}
		else{
			for (Joueur jCourant:joueurs) jCourant.setNbPingouins(nbPingouins);

			while(joueurs.size()>nbJoueurs){
				joueurs.remove(joueurs.size()-1);
			}
			while(joueurs.size()<nbJoueurs){
				joueurs.add(new Joueur("Joueur"+(joueurs.size()+1), 
						new Color((float)Math.random(),(float)Math.random(),(float)Math.random()),
						nbPingouins, true,true));
			}
		}
	}
	
	
	public void addJoueur(Joueur joueur){
		joueurs.add(joueur);
	}
	
	public boolean removeJoueur(Joueur joueur){
		return joueurs.remove(joueur);
	}
	
	public void editJoueur(Joueur joueur,String pseudo, Color couleur, int nbPingouins,boolean isHuman){
		int index=joueurs.lastIndexOf(joueur);
		if(index!=-1) {
			Joueur jEdit=joueurs.get(index);
			jEdit.setPseudo(pseudo);
			jEdit.setCouleur(couleur);
			jEdit.setNbPingouins(nbPingouins);
			jEdit.setIsHuman(isHuman);
			// doit on editer le booleen localPlayer? ne change normalement pas
		}
	}
	

}
